#ifndef DLM_API_H_INCLUDED
#define DLM_API_H_INCLUDED

#include <stdio.h>
#include "common.h"

/**
 * Funkcja która inicjalizuje DLM, jako argument pobiera deskrytpory potoków
 */
void DLM_init(int pipes[2]);

/**
 * Funkcja probuje zalozyc blokade danego typu na dany zasob
 */
int DLM_lock( int resource_id, int lock_type, long timeout );

/**
 * Funkcja sprawdza czy mozna zalozyc dana blokade
 */
int DLM_trylock( int resource_id, int lock_type );

/**
 * Funkcja zdejmuje blokade z wybranego zasobu
 */
int DLM_unlock( int resource_id );

/**
 * Funkcja informuje DLM że proces się zakończył (można pozamykać potoki)
 */
int DLM_terminate_process();

//======================//
/* Wysyla podana wiadomosc do DLM */
int send_message(int request, int resource_id, int lock_type, long timeout);

/* Oczekuje na odpowiedz po czym zwraca ją: potrzebna nam cała wiadomość?
 * może wystarczy tylko returnValue */
int read_reply();

#endif
